package utils

import (
	"time"
    "sync"
)

// 创建一个 sync.Map 作为缓存
var cacheInstance sync.Map

// 定义一个结构体来存储缓存项及其过期时间
type cacheItem struct {
    value     interface{}
    expiration time.Time
}

// 检查缓存项是否过期
func isExpired(item cacheItem) bool {
    return !item.expiration.IsZero() && time.Now().After(item.expiration)
}


func CacheGet(key string) (interface{}) {
	// 尝试从缓存中获取数据
    if cached, found := cacheInstance.Load(key); found {
        item := cached.(cacheItem)
        if !isExpired(item) {
			return item.value
        }
    }

	return nil
}

func CacheSet(key string, data interface{}, expiration time.Time) {
    cacheInstance.Store(key, cacheItem{value: data, expiration: expiration})
}